#!/bin/bash

# 检查是否以root权限运行
if [ "$(id -u)" -ne 0 ]; then
    echo "此脚本需要以root权限运行"
    exit 1
fi

# 检查输入的参数
if [ $# -ne 2 ]; then
    echo "使用方法: $0 <用户名> <密码>"
    exit 1
fi

# 获取用户名和密码参数
USERNAME=$1
PASSWORD=$2

# 创建新用户并设置密码
useradd -m -s /bin/bash $USERNAME
echo "$USERNAME:$PASSWORD" | chpasswd

# 将新用户添加到wheel组
usermod -aG wheel $USERNAME

# 定义 /etc/sudoers 文件路径
SUDOERS_FILE="/etc/sudoers"
TMP_FILE=$(mktemp)

# 读取sudoers文件状态，检测是否需要修改
WHEEL_ALL_LINE=$(grep -E "^[^#]*%wheel\s+ALL=\(ALL\)\s+ALL" "$SUDOERS_FILE")
WHEEL_NOPASSWD_LINE=$(grep -E "^[^#]*%wheel\s+ALL=\(ALL\)\s+NOPASSWD:\s+ALL" "$SUDOERS_FILE")
WHEEL_ALL_COMMENTED=$(grep -E "^\s*#\s*%wheel\s+ALL=\(ALL\)\s+ALL" "$SUDOERS_FILE")

# 检查当前配置
if [ -n "$WHEEL_NOPASSWD_LINE" ] && [ -z "$WHEEL_ALL_LINE" ]; then
    echo "sudoers 文件已经正确配置，无需修改。"
else
    echo "sudoers 文件需要修改，正在处理..."
    
    # 使用 sed 进行修改
    sed -e '/^[[:space:]]*%wheel[[:space:]]*ALL=(ALL)[[:space:]]*ALL/s/^/#/' \
        -e '/^[[:space:]]*#*[[:space:]]*%wheel[[:space:]]*ALL=(ALL)[[:space:]]*NOPASSWD:[[:space:]]*ALL/s/^#\s*//' \
        "$SUDOERS_FILE" > "$TMP_FILE"
    
    # 检查 sudoers 文件语法是否正确
    visudo -cf "$TMP_FILE"
    if [ $? -eq 0 ]; then
        mv "$TMP_FILE" "$SUDOERS_FILE"
        echo "sudo配置已更新：注释 %wheel ALL=(ALL) ALL，并解注释 %wheel ALL=(ALL) NOPASSWD: ALL"
    else
        echo "sudoers 文件修改失败，请检查修改内容。"
        rm "$TMP_FILE"
        exit 1
    fi
fi

echo "用户 $USERNAME 创建成功，并已加入wheel组。"
